package fr.bludwarf.skywarrior.evenements;

import fr.bludwarf.skywarrior.exceptions.ConstructionImpossible;
import fr.bludwarf.skywarrior.exceptions.IleInconnue;
import fr.bludwarf.skywarrior.global.EtatMonde;
import fr.bludwarf.skywarrior.global.TimeFactorInconnu;
import fr.bludwarf.skywarrior.ile.Construction;
import fr.bludwarf.skywarrior.ile.EtatIle;
import fr.bludwarf.skywarrior.ile.Ile;
import fr.bludwarf.skywarrior.joueur.EtatJoueur;

public class CommencerConstruction extends Evenement {
	
	private final Construction _construction;

	public CommencerConstruction(final EtatJoueur etatJoueur, final Construction construction) {
		super(etatJoueur.tempsPourCollecter(construction.getCout()));
		_construction = construction;
	}

	@Override
	public void execute(EtatMonde etatMonde) throws ConstructionImpossible, TimeFactorInconnu, IleInconnue {
		final Ile ile = _construction.getIle();
		final EtatIle etatIle = etatMonde.getEtatIle(ile);
		etatIle.execute(this);
	}
	
	public Construction getConstruction() {
		return _construction;
	}
	
	@Override
	public String toString() {
		return "Début de la construction de " + _construction.getUnite() + " sur l'" + _construction.getIle();
	}

}
